Skip to content

fix: исправить мобильный редактор, приглашения и уведомления связи - #405

Merged
TThanos3000 merged 1 commit into
devfrom
fix/mobile-smoke-polish
Oct 10, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
fix/mobile-smoke-polish

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Что изменено

Мобильный редактор проекта и приглашения больше не имеют пересечений кнопок, двойной рамки поиска и узкого поля даты. Карточки приглашений центрируются, строки внимания в аналитике не выглядят как полосы прогресса, пустая кнопка контактов программы скрыта.

Вместо двух повторяющихся ошибок соединения показано одно закрываемое сообщение о недоступности чата. Подключение восстанавливается автоматически; после восстановления сообщение исчезает.

Зачем

Закрыть десять дефектов, обнаруженных при smoke-test dev на iPhone, с сохранением восстановленного desktop ≥1000 px.

Реализация

  • Все изменения геометрии/типографики существующих элементов ограничены <1000px: проекты, редактор/цели/партнёры, AvatarControl, Input/Textarea, RegionSelect, приглашения и аналитика.
  • Поиск в двух invite-модалках использует одну рамку внешнего контейнера и его focus-состояние. Footer компактной модалки занимает полную ширину.
  • Контакты программы показываются при наличии ссылок и том же условии участия, что у desktop-блока контактов; проверено открытие модалки с существующей ссылкой.
  • ChatRealtimeRepository больше не создаёт второе уведомление. ConnectionStatusToastService владеет одним snackbar на период сбоя; WebsocketService предоставляет статус восстановления и отменяет retry при явном закрытии сессии.
  • Добавлены воспроизводимый browser harness, строгий RGB comparator и скриншоты. Отчёт, результаты desktop.

API

HTTP/WebSocket contracts, payload, авторизация и очередь исходящих сообщений не менялись. Изменены транспортный lifecycle и UX его состояния; бизнес-правила проектов, программ и приглашений сохранены.

UI

Использованы текущие Mont, палитра и компоненты. Эталон — пользовательские screenshots и текущий dev 706a574e после восстановления desktop в #403. Новый desktop-дизайн не вводится. Новая close-кнопка применяется только к закрываемому уведомлению.

Permissions

Server-side permissions и scope объектов не менялись: backend/API diff отсутствует. Существующие проверки ролей и отправки приглашений сохранены.

Проверки

Локальная среда: Windows, Node.js 24, Chrome с fixtures. В репозитории нет workflow для pull_request: GitHub проверки dev запускаются только по push в dev после merge.

  • npm run test:vitest:ci: 2016 tests / 407 files, exit 0. Три существующих legacy exclusions перечислены в отчёте.
  • npm run build:social:prod и финальная development-сборка: exit 0.
  • npm run lint:ts: 0 errors, 6 существующих warnings вне diff.
  • Stylelint изменённых SCSS: exit 0.
  • npm run format:check: exit 0 на staged Git snapshot с LF и тем же CI-конфигом.
  • Browser: 16 экранов и 6 дополнительных состояний на 320/390/768/1440/1920; проверки геометрии, disabled/enabled, overflow и console errors.
  • Pixel regression desktop: 44/44 обязательные пары на 1440/1920, 0 изменённых RGB-пикселей, без масок и допуска. Прокрутка нормализована; при отсутствии любой пары comparator падает.
  • Browser connection smoke: один snackbar, закрытие вручную без повторного появления в том же сбое, второй отдельный сбой, автоматическое скрытие после reconnect.
  • Source review: media boundaries, lifecycle, queue compatibility, UI focus/close accessibility, отсутствие API/permission/domain изменений — passed.

Acceptance criteria

  • 1. Приглашения центрируются.
  • 2. Логотип и подсказка не пересекаются, верхние действия имеют отступы.
  • 3. Дата помещается, подсказка не перекрывает ввод, размер текста региона совпадает с остальными полями.
  • 4. Кнопки добавления цели/ссылки занимают ширину формы; новая цель не сжимает поля.
  • 5. Кнопки партнёра/ресурса разделены отступом.
  • 6. Поиск участника имеет одну рамку.
  • 7. Кнопки приглашения занимают полную ширину footer.
  • 8. Пустые контакты скрыты; существующие ссылки доступны в мобильной модалке.
  • 9. Строки внимания не имеют частичной фиолетовой заливки.
  • 10. Ошибка чата не дублируется, понятна, закрывается и исчезает при восстановлении.
  • Desktop ≥1000 сохранён; pixel comparison 1440/1920 passed.
  • Mobile/tablet 320/390/768 прошли повторную проверку.

Не проверено

Реальные iOS/Android, Safari/WebKit, загрузка файлов, live API и сетевой обрыв на dev. Локальные браузерные проверки используют синтетические API/WS и неизменённые файлы build через Playwright route, чтобы исключить сбои локального HTTP/proxy. После merge повторить smoke-test на физических устройствах, включая background/resume и восстановление чата.

Риски / migration

Backend/data migration не требуется. Transport lifecycle покрыт тестами очереди, retry, явного закрытия и восстановления; реальные device/network сценарии остаются этапом acceptance на dev. Merge и deploy в этот PR workflow не входят.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants